package gui;

import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import utils.ImageLoader;
import java.awt.Component;
import java.awt.Font;

public class DominoGameCellRenderer extends JLabel implements TableCellRenderer {
	
	private static final int [][] leftOrder = {
		{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
		{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1},
		{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 2,-1},
		{-1, 1, 3, 0,-1, 1, 3, 0,-1,-1,-1,-1,-1, 0,-1},
		{-1, 0,-1, 2,-1, 0,-1, 2,-1,-1,-1,-1,-1, 2,-1},    
		{-1, 2,-1, 0,-1, 2,-1, 0,-1,-1,-1,-1,-1, 0,-1},    
		{-1, 0,-1, 2,-1, 0,-1,-1,-1,-1,-1,-1,-1, 2,-1},   
		{-1, 2,-1, 0,-1, 2,-1,-1,-1,-1,-1,-1,-1, 0,-1},   
		{-1, 0,-1, 2, 1, 3,-1,-1,-1,-1,-1,-1,-1, 2,-1},    
		{-1, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1}, 
		{-1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 2,-1},
		{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}};
	
	private static final int [][] rightOrder = {
                {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
                {-1, 0, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,-1},
                {-1, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1},
                {-1, 0,-1,-1,-1,-1,-1,-1,-1, 1, 3, 0,-1, 2,-1},
                {-1, 2,-1,-1,-1,-1,-1,-1,-1, 0,-1, 2,-1, 0,-1},
                {-1, 0,-1,-1,-1,-1,-1,-1,-1, 2,-1, 0,-1, 2,-1},
                {-1, 2,-1,-1,-1,-1,-1, 2,-1, 0,-1, 2,-1, 0,-1},
                {-1, 0,-1,-1,-1,-1,-1, 0,-1, 2,-1, 0,-1, 2,-1},
                {-1, 2,-1,-1,-1,-1,-1, 2, 1, 3,-1, 2, 1, 3,-1},
                {-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
                {-1, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
                {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}}; 
	
    private static final String[] order = {Properties.UP, Properties.LEFT, Properties.DOWN, Properties.RIGHT};
	
    public DominoGameCellRenderer() {
        setOpaque(false);
        setFont(new Font("Arial", Font.BOLD, 49));
        this.setHorizontalAlignment(SwingConstants.CENTER);
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
                                                   boolean isSelected,
                                                   boolean hasFocus, int row,
                                                   int column) {       
    	int val = ((Integer)value); 
    	
        ImageLoader loader = ImageLoader.getLoader();

        if (val == -2) {
            setIcon(loader.getIcon(Properties.IMAGE_DIR + "place.png"));
        } else if (val != -1) {
            setIcon(loader.getIcon(Properties.IMAGE_DIR + Properties.SUFFIX + val % 7 + order[val < 7 ? leftOrder[row][column] :  rightOrder[row][column]]));
            setOpaque(false);
        } else {
            setIcon(loader.getIcon(Properties.IMAGE_DIR + "mesa.jpg"));
            setOpaque(false);
        }
        return this;
    }
}
